using System.Collections.Generic;
using System.Threading.Tasks;
using CPlatePrintSys.Domain.Models;

namespace CPlatePrintSys.Domain.Services
{
    /// <summary>
    /// 用户领域服务接口
    /// 定义用户相关的业务操作契约
    /// </summary>
    public interface IUserService
    {
        Task<User> GetUserByIdAsync(int id);
        Task<User> GetUserByUsernameAsync(string username);
        Task<IEnumerable<User>> GetAllUsersAsync();
        Task<User> CreateUserAsync(User user);
        Task UpdateUserAsync(User user);
        Task DeleteUserAsync(int id);
        Task<bool> ValidateUserCredentialsAsync(string username, string password);
        Task<bool> IsUsernameExistsAsync(string username);
        Task<bool> IsJobNumberExistsAsync(string jobNumber);
        Task UpdateLastLoginAsync(int userId);
        Task<IEnumerable<User>> GetUsersByRoleAsync(string role);
        Task<int> GetActiveUserCountAsync();
    }
} 